{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 前面这两句话是忽略掉所有警告，免得干扰判断"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import warnings\n",
    "warnings.filterwarnings('ignore')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 利用sklearn包的随机森林分类器"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.model_selection import train_test_split\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 读取sonar.all-data.csv数据集\n",
    "### 这个数据集是加州大学欧文分校提供的声呐探测数据集，一共有208个样本，60个特征值。\n",
    "### 数据是声呐照射到物体上反射回来的各种角度、强度等等特征，用来识别被照射物是金属还是岩石\n",
    "### 结果为M的为金属（metal），R的为岩石（rock）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "sonar = pandas.read_csv(\"./data/sonar.all-data.csv\",header=None,prefix='X')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 修改列名，每个把最后一个列（结果列）的名称改为Label"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "sonar.rename(columns={'X60':'Label'}, inplace=True)\n",
    "sonar.Label = sonar.Label.astype('category')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>X0</th>\n",
       "      <th>X1</th>\n",
       "      <th>X2</th>\n",
       "      <th>X3</th>\n",
       "      <th>X4</th>\n",
       "      <th>X5</th>\n",
       "      <th>X6</th>\n",
       "      <th>X7</th>\n",
       "      <th>X8</th>\n",
       "      <th>X9</th>\n",
       "      <th>...</th>\n",
       "      <th>X51</th>\n",
       "      <th>X52</th>\n",
       "      <th>X53</th>\n",
       "      <th>X54</th>\n",
       "      <th>X55</th>\n",
       "      <th>X56</th>\n",
       "      <th>X57</th>\n",
       "      <th>X58</th>\n",
       "      <th>X59</th>\n",
       "      <th>Label</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.0200</td>\n",
       "      <td>0.0371</td>\n",
       "      <td>0.0428</td>\n",
       "      <td>0.0207</td>\n",
       "      <td>0.0954</td>\n",
       "      <td>0.0986</td>\n",
       "      <td>0.1539</td>\n",
       "      <td>0.1601</td>\n",
       "      <td>0.3109</td>\n",
       "      <td>0.2111</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0027</td>\n",
       "      <td>0.0065</td>\n",
       "      <td>0.0159</td>\n",
       "      <td>0.0072</td>\n",
       "      <td>0.0167</td>\n",
       "      <td>0.0180</td>\n",
       "      <td>0.0084</td>\n",
       "      <td>0.0090</td>\n",
       "      <td>0.0032</td>\n",
       "      <td>R</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.0453</td>\n",
       "      <td>0.0523</td>\n",
       "      <td>0.0843</td>\n",
       "      <td>0.0689</td>\n",
       "      <td>0.1183</td>\n",
       "      <td>0.2583</td>\n",
       "      <td>0.2156</td>\n",
       "      <td>0.3481</td>\n",
       "      <td>0.3337</td>\n",
       "      <td>0.2872</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0084</td>\n",
       "      <td>0.0089</td>\n",
       "      <td>0.0048</td>\n",
       "      <td>0.0094</td>\n",
       "      <td>0.0191</td>\n",
       "      <td>0.0140</td>\n",
       "      <td>0.0049</td>\n",
       "      <td>0.0052</td>\n",
       "      <td>0.0044</td>\n",
       "      <td>R</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.0262</td>\n",
       "      <td>0.0582</td>\n",
       "      <td>0.1099</td>\n",
       "      <td>0.1083</td>\n",
       "      <td>0.0974</td>\n",
       "      <td>0.2280</td>\n",
       "      <td>0.2431</td>\n",
       "      <td>0.3771</td>\n",
       "      <td>0.5598</td>\n",
       "      <td>0.6194</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0232</td>\n",
       "      <td>0.0166</td>\n",
       "      <td>0.0095</td>\n",
       "      <td>0.0180</td>\n",
       "      <td>0.0244</td>\n",
       "      <td>0.0316</td>\n",
       "      <td>0.0164</td>\n",
       "      <td>0.0095</td>\n",
       "      <td>0.0078</td>\n",
       "      <td>R</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.0100</td>\n",
       "      <td>0.0171</td>\n",
       "      <td>0.0623</td>\n",
       "      <td>0.0205</td>\n",
       "      <td>0.0205</td>\n",
       "      <td>0.0368</td>\n",
       "      <td>0.1098</td>\n",
       "      <td>0.1276</td>\n",
       "      <td>0.0598</td>\n",
       "      <td>0.1264</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0121</td>\n",
       "      <td>0.0036</td>\n",
       "      <td>0.0150</td>\n",
       "      <td>0.0085</td>\n",
       "      <td>0.0073</td>\n",
       "      <td>0.0050</td>\n",
       "      <td>0.0044</td>\n",
       "      <td>0.0040</td>\n",
       "      <td>0.0117</td>\n",
       "      <td>R</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.0762</td>\n",
       "      <td>0.0666</td>\n",
       "      <td>0.0481</td>\n",
       "      <td>0.0394</td>\n",
       "      <td>0.0590</td>\n",
       "      <td>0.0649</td>\n",
       "      <td>0.1209</td>\n",
       "      <td>0.2467</td>\n",
       "      <td>0.3564</td>\n",
       "      <td>0.4459</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0031</td>\n",
       "      <td>0.0054</td>\n",
       "      <td>0.0105</td>\n",
       "      <td>0.0110</td>\n",
       "      <td>0.0015</td>\n",
       "      <td>0.0072</td>\n",
       "      <td>0.0048</td>\n",
       "      <td>0.0107</td>\n",
       "      <td>0.0094</td>\n",
       "      <td>R</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 61 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       X0      X1      X2      X3      X4      X5      X6      X7      X8  \\\n",
       "0  0.0200  0.0371  0.0428  0.0207  0.0954  0.0986  0.1539  0.1601  0.3109   \n",
       "1  0.0453  0.0523  0.0843  0.0689  0.1183  0.2583  0.2156  0.3481  0.3337   \n",
       "2  0.0262  0.0582  0.1099  0.1083  0.0974  0.2280  0.2431  0.3771  0.5598   \n",
       "3  0.0100  0.0171  0.0623  0.0205  0.0205  0.0368  0.1098  0.1276  0.0598   \n",
       "4  0.0762  0.0666  0.0481  0.0394  0.0590  0.0649  0.1209  0.2467  0.3564   \n",
       "\n",
       "       X9  ...     X51     X52     X53     X54     X55     X56     X57  \\\n",
       "0  0.2111  ...  0.0027  0.0065  0.0159  0.0072  0.0167  0.0180  0.0084   \n",
       "1  0.2872  ...  0.0084  0.0089  0.0048  0.0094  0.0191  0.0140  0.0049   \n",
       "2  0.6194  ...  0.0232  0.0166  0.0095  0.0180  0.0244  0.0316  0.0164   \n",
       "3  0.1264  ...  0.0121  0.0036  0.0150  0.0085  0.0073  0.0050  0.0044   \n",
       "4  0.4459  ...  0.0031  0.0054  0.0105  0.0110  0.0015  0.0072  0.0048   \n",
       "\n",
       "      X58     X59  Label  \n",
       "0  0.0090  0.0032      R  \n",
       "1  0.0052  0.0044      R  \n",
       "2  0.0095  0.0078      R  \n",
       "3  0.0040  0.0117      R  \n",
       "4  0.0107  0.0094      R  \n",
       "\n",
       "[5 rows x 61 columns]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sonar.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 把结果改为数值型，主要是在训练的是模型只认数值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "sonar[\"Label\"] = sonar[\"Label\"].map({\"R\":0,\"M\":1})"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 抽取最后一个列为y 列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "data, labels = sonar.iloc[:, :-1], sonar.iloc[:, -1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 随机提取33%的数据作为测试子集的样本"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train, X_test, y_train, y_test = \\\n",
    "  train_test_split(data, labels, test_size=0.33, random_state=44)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 执行随机森林分类，最大树深度定义为2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "clf = RandomForestClassifier(max_depth=2, random_state=0)\n",
    "clf.fit(X_train, y_train)\n",
    "pass"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 利用测试子集进行验证，获得分类精度得分"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7101449275362319"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "clf.score(X_test, y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 对列抽样的数量，实际上和分类的精度关系不大"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [],
   "source": [
    "col = sonar.columns.tolist()\n",
    "x = []\n",
    "y = []\n",
    "for i in range(5,len(col)-1):\n",
    "    x.append(i)\n",
    "    colname = col[:i]\n",
    "    colname +=[\"Label\"]\n",
    "    subsonar = sonar.loc[:,colname]\n",
    "    data, labels = subsonar.iloc[:, :-1], subsonar.iloc[:, -1]\n",
    "    X_train, X_test, y_train, y_test = \\\n",
    "      train_test_split(data, labels, test_size=0.33, random_state=44)\n",
    "    clf = RandomForestClassifier(max_depth=2, random_state=10)\n",
    "    clf.fit(X_train, y_train)\n",
    "    y.append(clf.score(X_test, y_test))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 下面x坐标是参与训练的列的数量，y是分类的得分"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<BarContainer object of 55 artists>"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAswAAAFpCAYAAACI6H7aAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzs3XlclWX6P/DPzS4gCAjKouIu2GKGZolLq7lbTaVY0zbT1ORMizVT0zQ19a1pZmxqftVMy7RMM6JZMxO4lLa5YJpgmQtuqIAICgiKiOz374/7PHBAOJzlOec5y+f9evECHp7lBg6c69zPdV+XkFKCiIiIiIi65mf0AIiIiIiI3BkDZiIiIiIiCxgwExERERFZwICZiIiIiMgCBsxERERERBYwYCYiIiIissCqgFkIcb0QYr8QokAI8XgXXx8khPhSCLFTCLFeCJFk9rU7hBAHTW936Dl4IiIiIiJnEz3VYRZC+AM4AOBaACUAcgEskFLmm+3zEYBVUsp/CiGuAnCXlPJ2IUQ0gDwAaQAkgO0ALpVSVjvluyEiIiIi0pk1M8zjARRIKQ9LKRsBLAcwt9M+qQC+NH38tdnXpwH4XEpZZQqSPwdwvePDJiIiIiJyDWsC5kQAR80+LzFtM/cDgJtMH98AoLcQIsbKY4mIiIiI3FaAFfuILrZ1zuN4FMBrQog7AWwEcAxAs5XHQghxL4B7ASAsLOzSUaNGWTEsIiIiIiL7bd++vVJKGdvTftYEzCUABph9ngSg1HwHKWUpgBsBQAgRDuAmKeVpIUQJgKmdjl3f+QJSyrcAvAUAaWlpMi8vz4phERERERHZTwhRZM1+1qRk5AIYLoQYLIQIAjAfQHani/UVQmjnegLAu6aP1wK4TggRJYSIAnCdaRsRERERkUfoMWCWUjYDWAQV6O4FsEJKuUcI8awQYo5pt6kA9gshDgDoB+B507FVAJ6DCrpzATxr2kZERERE5BF6LCvnakzJICIiIiJXEEJsl1Km9bQfO/0REREREVnAgJmIiIiIyAIGzEREREREFjBgJiIiIiKygAEzEREREZEFDJiJiIiIiCxgwExEREREZAEDZiIiIiIiCxgwExERERFZwICZiIiIiMgCBsxERERERBYwYCYiIiIisoABMxERERGRBQyYiYiIiIgsYMBMRERERGQBA2YiIiIiIgsYMBMRERERWcCAmYiIiIjIAgbMREREREQWMGAmIiIiIrKAATMRERERkQUMmImIiIiILGDATERERERkAQNmIiIiIiILGDATEREREVnAgJmIiIiIyAIGzEREREREFjBgJiIiIiKygAEzEREREZEFDJiJiIiIiCxgwExEREREZAEDZiIiIiIiCxgwExERERFZwICZiIiIiMgCBsxERERERBYwYCYiIiIisoABMxERERGRBQyYiYiIiIgsYMBMRERERGQBA2YiIiIiIgsYMBMRERERWcCAmYiIiIjIAgbMREREREQWMGAmIiIiIrKAATMRERERkQUMmImIiIiILLAqYBZCXC+E2C+EKBBCPN7F1wcKIb4WQnwvhNgphJhh2p4shDgnhNhhentD72+AiIiIiMiZAnraQQjhD+B1ANcCKAGQK4TIllLmm+32WwArpJR/F0KkAlgDINn0tUNSyjH6DpuIiIiIyDWsmWEeD6BASnlYStkIYDmAuZ32kQAiTB9HAijVb4hERERERMaxJmBOBHDU7PMS0zZzzwC4TQhRAjW7/Auzrw02pWpsEEJM6uoCQoh7hRB5Qoi8iooK60dPRERERORk1gTMoottstPnCwC8L6VMAjADwL+EEH4AygAMlFJeAuARAJlCiIhOx0JK+ZaUMk1KmRYbG2vbd0BERERE5ETWBMwlAAaYfZ6E81Mu7gGwAgCklFsAhADoK6VskFKeNG3fDuAQgBGODpqIiIiIyFWsCZhzAQwXQgwWQgQBmA8gu9M+xQCuBgAhRApUwFwhhIg1LRqEEGIIgOEADus1eCIiIiIiZ+uxSoaUslkIsQjAWgD+AN6VUu4RQjwLIE9KmQ1gMYC3hRAPQ6Vr3CmllEKIyQCeFUI0A2gBcJ+Usspp3w0RERERkc6ElJ3TkY2VlpYm8/LyjB4GEREREXk5IcR2KWVaT/ux0x8RERERkQUMmImIiIiILGDATERERERkAQNmIiIiIiILGDATEREREVnAgJmIiIiIyAIGzEREREREFjBgJiIiIiKygAEzEREREZEFDJiJiIiIiCxgwExEREREZAEDZiIiIiIiCxgwExERERFZwICZiIiIiMgCBsxERERERBYwYCYiIiIisoABMxERERGRBQyYiYiIiIgsYMBMRERERGQBA2YiIiJvc+YMcNttQEmJ0SMh8goB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\n",
      "text/plain": [
       "<Figure size 864x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(12,6))\n",
    "plt.ylim(0.6,0.9)\n",
    "plt.plot(x,y,color=\"r\")\n",
    "plt.bar(x,y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 反正相关性都很不咋地"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>x</th>\n",
       "      <th>y</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>x</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.060158</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>y</th>\n",
       "      <td>-0.060158</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          x         y\n",
       "x  1.000000 -0.060158\n",
       "y -0.060158  1.000000"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.regplot(x,y)\n",
    "pandas.DataFrame({\"x\":x,\"y\":y}).corr()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### max_depth 决策树的最大深度与分类进度的关系"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [],
   "source": [
    "col = sonar.columns.tolist()\n",
    "x = []\n",
    "y = []\n",
    "for i in range(2,15):\n",
    "    x.append(i)\n",
    "    data, labels = sonar.iloc[:, :-1], sonar.iloc[:, -1]\n",
    "    X_train, X_test, y_train, y_test = \\\n",
    "      train_test_split(data, labels, test_size=0.33, random_state=44)\n",
    "    clf = RandomForestClassifier(max_depth=i, random_state=10)\n",
    "    clf.fit(X_train, y_train)\n",
    "    y.append(clf.score(X_test, y_test))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 发现深度到了10之后，就不再变化了"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x1cf6bdca668>"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(12,6))\n",
    "plt.ylim(0.6,0.9)\n",
    "plt.plot(x,y,color=\"r\")\n",
    "plt.scatter(x,y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 相关性"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>x</th>\n",
       "      <th>y</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>x</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.721342</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>y</th>\n",
       "      <td>0.721342</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          x         y\n",
       "x  1.000000  0.721342\n",
       "y  0.721342  1.000000"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.regplot(x,y)\n",
    "pandas.DataFrame({\"x\":x,\"y\":y}).corr()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 利用GridSearchCV函数进行交叉验证参数优化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import GridSearchCV"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Program Files\\ArcGIS\\Pro\\bin\\Python\\envs\\arcgispro-py3\\lib\\site-packages\\sklearn\\model_selection\\_search.py:841: DeprecationWarning: The default of the `iid` parameter will change from True to False in version 0.22 and will be removed in 0.24. This will change numeric results when test-set sizes are unequal.\n",
      "  DeprecationWarning)\n"
     ]
    }
   ],
   "source": [
    "parameters = [{'n_estimators': list(range(25, 201, 25)),\n",
    "               'max_features': list(range(2, 15, 2))}]\n",
    "clf = GridSearchCV(RandomForestClassifier(), parameters,\n",
    "                   cv=5, scoring='accuracy', n_jobs=-1)\n",
    "clf.fit(X_train, y_train)\n",
    "pass"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'max_features': 2, 'n_estimators': 150}"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "clf.best_params_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.782608695652174"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "clf.score(X_test, y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
